﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Diagnostics;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Tesis2.Models;

namespace Tesis2.Controllers
{
    public class EmergenciaController : Controller
    {
        private TesisDBContext db = new TesisDBContext();

        //
        // GET: /Emergencia/

        public ActionResult Index()
        {
            var emergencias = db.Emergencias.Include(e => e.EstadoEmergencia).Include(e => e.TipoEmergencia).Include(e => e.DireccionEmergencia);
            return View(emergencias.ToList());
        }

        public ActionResult List(string Codigo)
        {
            int id = Convert.ToInt32(Codigo);

            var emergencias = (from item in db.Emergencias
                            where item.EmergenciaID.Equals(id)
                            select item).ToList();

            foreach (var eme in emergencias)
            {
                Parametro estado = db.Parametros.Find(eme.EstadoEmergenciaID);
                TipoEmergencia tipo = db.TipoEmergencias.Find(eme.TipoEmergenciaID);

                eme.EstadoEmergencia = estado;
                eme.TipoEmergencia = tipo;
            }

            return View(emergencias);
        }

        
        public ActionResult Search()
        {
            var emergencias = db.Emergencias.Include(e => e.EstadoEmergencia).Include(e => e.TipoEmergencia).Include(e => e.DireccionEmergencia).ToList();

            foreach (var eme in emergencias)
            {
                Parametro estado = db.Parametros.Find(eme.EstadoEmergenciaID);
                TipoEmergencia tipo = db.TipoEmergencias.Find(eme.TipoEmergenciaID);

                eme.EstadoEmergencia = estado;
                eme.TipoEmergencia = tipo;
            }
            return View(emergencias);
        }

        //
        // GET: /Emergencia/Details/5

        public ActionResult Details(int id = 0)
        {
            Emergencia emergencia = db.Emergencias.Find(id);
            if (emergencia == null)
            {
                return HttpNotFound();
            }
            return View(emergencia);
        }

        //
        // GET: /Emergencia/Create

        public ActionResult Create()
        {
            //bool flag = false;
            /*foreach (Ventana v in (List<Ventana>)Session["ventanas"])
            {
                if (v.Descripcion == "CREAREMERGENCIA") {
                    flag = true;
                }
            }
            if (flag == false){
                
                return RedirectToAction("List");
            }*/

            List<Parametro> parametros = db.Parametros.Where(p => p.CodigoUnico == "ESTADOEMERGENCIA").ToList();
            ViewBag.EstadoEmergenciaID = new SelectList(parametros, "ParametroID", "Nombre");
            //ViewBag.EstadoEmergenciaID = new SelectList(db.Parametros, "ParametroID", "Nombre");
            ViewBag.TipoEmergenciaID = new SelectList(db.TipoEmergencias, "TipoEmergenciaID", "Nombre");
            ViewBag.DireccionEmergenciaID = new SelectList(db.Direcciones, "DireccionID", "Descripcion");
            return View();
        }

        //
        // POST: /Emergencia/Create

        [HttpPost]
        public ActionResult Create(Emergencia emergencia)
        {
            if (ModelState.IsValid)
            {
                Console.WriteLine(emergencia.FechaInicio);
                db.Emergencias.Add(emergencia);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            
            List<Parametro> parametros = db.Parametros.Where(p => p.CodigoUnico == "ESTADOEMERGENCIA").ToList();
            ViewBag.EstadoEmergenciaID = new SelectList(parametros, "ParametroID", "Nombre", emergencia.EstadoEmergenciaID);
            //ViewBag.EstadoEmergenciaID = new SelectList(db.Parametros, "ParametroID", "Nombre", emergencia.EstadoEmergenciaID);
            ViewBag.TipoEmergenciaID = new SelectList(db.TipoEmergencias, "TipoEmergenciaID", "Nombre", emergencia.TipoEmergenciaID);
            ViewBag.DireccionEmergenciaID = new SelectList(db.Direcciones, "DireccionID", "Descripcion", emergencia.DireccionEmergenciaID);
            return View(emergencia);
        }

        //
        // GET: /Emergencia/Edit/5

        public ActionResult Edit(int id = 0)
        {
            Emergencia emergencia = db.Emergencias.Find(id);
            if (emergencia == null)
            {
                return HttpNotFound();
            }
            ViewBag.EstadoEmergenciaID = new SelectList(db.Parametros, "ParametroID", "Nombre", emergencia.EstadoEmergenciaID);
            ViewBag.TipoEmergenciaID = new SelectList(db.TipoEmergencias, "TipoEmergenciaID", "Nombre", emergencia.TipoEmergenciaID);
            ViewBag.DireccionEmergenciaID = new SelectList(db.Direcciones, "DireccionID", "Descripcion", emergencia.DireccionEmergenciaID);
            return View(emergencia);
        }

        //
        // POST: /Emergencia/Edit/5

        [HttpPost]
        public ActionResult Edit(Emergencia emergencia)
        {
            if (ModelState.IsValid)
            {
                db.Entry(emergencia).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            ViewBag.EstadoEmergenciaID = new SelectList(db.Parametros, "ParametroID", "Nombre", emergencia.EstadoEmergenciaID);
            ViewBag.TipoEmergenciaID = new SelectList(db.TipoEmergencias, "TipoEmergenciaID", "Nombre", emergencia.TipoEmergenciaID);
            ViewBag.DireccionEmergenciaID = new SelectList(db.Direcciones, "DireccionID", "Descripcion", emergencia.DireccionEmergenciaID);
            return View(emergencia);
        }

        //
        // GET: /Emergencia/Delete/5

        public ActionResult Delete(int id = 0)
        {
            Emergencia emergencia = db.Emergencias.Find(id);
            if (emergencia == null)
            {
                return HttpNotFound();
            }
            return View(emergencia);
        }

        //
        // POST: /Emergencia/Delete/5

        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id)
        {
            Emergencia emergencia = db.Emergencias.Find(id);
            db.Emergencias.Remove(emergencia);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        protected override void Dispose(bool disposing)
        {
            if (db != null)
            {
                db.Dispose();
                base.Dispose(disposing);
            }
        }


        public ActionResult Necesidades(int id = 0)
        {
            return View();
        }

        public ActionResult GenerarConsolidado(int id = 0)
        {
            Emergencia emergencia = db.Emergencias.Find(id);
            /*List<Formulario> formularios = db.Formularios.Where(c => c.EmergenciaFormularioID == id).ToList();

            Formulario consolidado = new Formulario();


            foreach (Formulario f in formularios)
            {
                // sacar sus daños
                // hacer sumatoria en consolidado
                // hacer ponderado en poncentajes
                // G_G
            }
            */
            List<Dato> gdatos1 = new List<Dato>();

            Dato d1 = new Dato();
            d1.Titulo = "Familias Damnificadas";
            d1.Valor = "23";

            Dato d2 = new Dato();
            d2.Titulo = "Familias Afectadas";
            d2.Valor = "57";

            Dato d3 = new Dato();
            d3.Titulo = "Personas Damnificadas";
            d3.Valor = "42";

            Dato d4 = new Dato();
            d4.Titulo = "Personas Afectadas";
            d4.Valor = "81";

            Dato d5 = new Dato();
            d5.Titulo = "Personas Afectadas";
            d5.Valor = "81";

            Dato d6 = new Dato();
            d6.Titulo = "Fallecidos";
            d6.Valor = "62";

            Dato d7 = new Dato();
            d7.Titulo = "Heridos";
            d7.Valor = "54";

            Dato d8 = new Dato();
            d8.Titulo = "Desaparecidos";
            d8.Valor = "9";

            gdatos1.Add(d1);
            gdatos1.Add(d2);
            gdatos1.Add(d3);
            gdatos1.Add(d4);
            gdatos1.Add(d5);
            gdatos1.Add(d6);
            gdatos1.Add(d7);
            gdatos1.Add(d8);

            DatoMayor salud = new DatoMayor();
            salud.Titulo = "Daños a la Salud";
            salud.Datos = new List<Dato>();
            salud.Datos.AddRange(gdatos1);

            ////////////////////////////////

            List<Dato> gdatos2 = new List<Dato>();

            Dato d9 = new Dato();
            d9.Titulo = "Viviendas Colapsadas";
            d9.Valor = "9";

            Dato d10 = new Dato();
            d10.Titulo = "Viviendas Inhabitables";
            d10.Valor = "6";

            Dato d11 = new Dato();
            d11.Titulo = "Viviendas Afectadas";
            d11.Valor = "13";

            Dato d12 = new Dato();
            d12.Titulo = "Institución Educativa Colapsada";
            d12.Valor = "1";

            Dato d13 = new Dato();
            d13.Titulo = "Institución Educativa Inhabitable";
            d13.Valor = "2";

            Dato d14 = new Dato();
            d14.Titulo = "Institución Educativa Afectada";
            d14.Valor = "1";

            gdatos2.Add(d9);
            gdatos2.Add(d10);
            gdatos2.Add(d11);
            gdatos2.Add(d12);
            gdatos2.Add(d13);
            gdatos2.Add(d14);

            DatoMayor materiales = new DatoMayor();
            materiales.Titulo = "Daños a Materiales";
            materiales.Datos = new List<Dato>();
            materiales.Datos.AddRange(gdatos2);


            ////////////////////////////////

            List<Dato> gdatos3 = new List<Dato>();

            Dato d15 = new Dato();
            d15.Titulo = "Servicio de Telefonía Fija (%)";
            d15.Valor = "17";

            Dato d16 = new Dato();
            d16.Titulo = "Señal de Telefonía Móvil (%)";
            d16.Valor = "23";

            Dato d17 = new Dato();
            d17.Titulo = "Señal de Radio y Televisión (%)";
            d17.Valor = "34";

            Dato d18 = new Dato();
            d18.Titulo = "Internet (%)";
            d18.Valor = "8";

            gdatos3.Add(d15);
            gdatos3.Add(d16);
            gdatos3.Add(d17);
            gdatos3.Add(d18);
            
            DatoMayor publica = new DatoMayor();
            publica.Titulo = "Daños a los Sistemas de Comunicación Pública";
            publica.Datos = new List<Dato>();
            publica.Datos.AddRange(gdatos3);


            List<DatoMayor> gg = new List<DatoMayor>();
            gg.Add(salud);
            gg.Add(materiales);
            gg.Add(publica);

            //////////////////////////////////


            /*List<Parametro> listadanos = new List<Parametro>();

            listadanos = db.Parametros.Where(d => d.CodigoUnico.Equals("UNIDADDANO")).ToList();
            ViewBag.Danos = listadanos;
            
            Parametro danoSalud = (from item in db.Parametros
                                  where item.CodigoUnico.Equals("UNIDADDANO") && item.Nombre.Equals("SALUD")
                                  select item).FirstOrDefault();

            var danosSalud = db.Danos.Where(d => d.UnidadDanoID.Equals(danoSalud.ParametroID)).ToList();*/
            /*
            int dxeSalud = (from a in db.Parametros
                            join b in db.Danos on a.ParametroID equals b.UnidadDanoID
                            join c in db.Formularios on emergencia.EmergenciaID equals c.EmergenciaFormularioID
                            join d in db.DanoXEmergencias on b.DanoID equals d.DanoEmergenciaID
                            into item
                            from i in item.DefaultIfEmpty()
                            where a.CodigoUnico.Equals("UNIDADDANO") && a.Nombre.Equals("SALUD")
                            select item).ToList().Count();

            
            if (dxeSalud != null)
            {
                Debug.WriteLine("Salio Null");
            }
            */
          
           // Debug.WriteLine(dxeSalud);
            
            /*
            var dxeMaterial = (from a in db.Parametros
                            join b in db.Danos on a.ParametroID equals b.UnidadDanoID
                            join c in db.Formularios on emergencia.EmergenciaID equals c.EmergenciaFormularioID
                            join d in db.DanoXEmergencias on b.DanoID equals d.DanoEmergenciaID
                            into item
                            from i in item.DefaultIfEmpty()
                            where a.CodigoUnico.Equals("UNIDADDANO") && a.Nombre.Equals("MATERIAL")
                            select item).ToList();

            var dxeComunica = (from a in db.Parametros
                            join b in db.Danos on a.ParametroID equals b.UnidadDanoID
                            join c in db.Formularios on emergencia.EmergenciaID equals c.EmergenciaFormularioID
                            join d in db.DanoXEmergencias on b.DanoID equals d.DanoEmergenciaID
                            into item
                            from i in item.DefaultIfEmpty()
                            where a.CodigoUnico.Equals("UNIDADDANO") && a.Nombre.Equals("COMUNICACION")
                            select item).ToList();

            var dxeServicios = (from a in db.Parametros
                            join b in db.Danos on a.ParametroID equals b.UnidadDanoID
                            join c in db.Formularios on emergencia.EmergenciaID equals c.EmergenciaFormularioID
                            join d in db.DanoXEmergencias on b.DanoID equals d.DanoEmergenciaID
                            into item
                            from i in item.DefaultIfEmpty()
                            where a.CodigoUnico.Equals("UNIDADDANO") && a.Nombre.Equals("SERVICIOS")
                            select item).ToList();
            */
            /*
            ViewBag.dxeSalud = dxeSalud;
            ViewBag.dxeMaterial = dxeMaterial;
            ViewBag.dxeComunica = dxeComunica;
            ViewBag.dxeServicios = dxeServicios;
            */



            
            //ViewBag.dxeSalud = dxeSalud;
            //

            // Dano Salud
            Parametro danoSalud= new Parametro();
            danoSalud = db.Parametros.Where(d => d.Nombre.Equals("SALUD")).ToList().FirstOrDefault();

            List<Dano> danosSalud = new List<Dano>();
            danosSalud = db.Danos.Where(d => d.UnidadDanoID.Equals(danoSalud.ParametroID)).ToList();

            List<DanoXEmergencia> dxeSalud = new List<DanoXEmergencia>();

            foreach (Dano dano in danosSalud)
            {
                dxeSalud.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));

            }            


            // Dano Materiales
            Parametro danoMateriales = new Parametro();
            danoMateriales = db.Parametros.Where(d => d.Nombre.Equals("MATERIAL")).ToList().FirstOrDefault();

            List<Dano> danosMateriales = new List<Dano>();
            danosMateriales = db.Danos.Where(d => d.UnidadDanoID.Equals(danoMateriales.ParametroID)).ToList();

            List<DanoXEmergencia> dxeMateriales = new List<DanoXEmergencia>();

            foreach (Dano dano in danosMateriales)
            {
                dxeMateriales.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));
                
            }

            //

            // Dano Comunicacion Publica
            Parametro danoCom = new Parametro();
            danoCom = db.Parametros.Where(d => d.Nombre.Equals("COMUNICACION")).ToList().FirstOrDefault();

            List<Dano> danosCom = new List<Dano>();
            danosCom = db.Danos.Where(d => d.UnidadDanoID.Equals(danoCom.ParametroID)).ToList();

            List<DanoXEmergencia> dxeCom = new List<DanoXEmergencia>();

            foreach (Dano dano in danosCom)
            {
                dxeCom.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));
            }
            
            //

            // Dano Servicios Basicos
            Parametro danoServicio = new Parametro();
            danoServicio = db.Parametros.Where(d => d.Nombre.Equals("SERVICIOS")).ToList().FirstOrDefault();

            List<Dano> danosServicio = new List<Dano>();
            danosServicio = db.Danos.Where(d => d.UnidadDanoID.Equals(danoServicio.ParametroID)).ToList();

            List<DanoXEmergencia> dxeServicio = new List<DanoXEmergencia>();

            foreach (Dano dano in danosServicio)
            {
                dxeServicio.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));
            }
            
            //

           







            //List<DanoXEmergencia> danosSalud = new List<DanoXEmergencia>();
            //danosSalud = db.DanoXEmergencias.Where(d => d.

            foreach (var dxe in dxeSalud)
            {
                Dano d = db.Danos.Find(dxe.DanoEmergenciaID);
                dxe.DanoEmergencia = d;

                Emergencia e = db.Emergencias.Find(dxe.EmergenciaAuxID);
                dxe.EmergenciaAux = e; ;
            }

            foreach (var dxe in dxeMateriales)
            {
                Dano d = db.Danos.Find(dxe.DanoEmergenciaID);
                dxe.DanoEmergencia = d;

                Emergencia e = db.Emergencias.Find(dxe.EmergenciaAuxID);
                dxe.EmergenciaAux = e; ;
            }

            foreach (var dxe in dxeCom)
            {
                Dano d = db.Danos.Find(dxe.DanoEmergenciaID);
                dxe.DanoEmergencia = d;

                Emergencia e = db.Emergencias.Find(dxe.EmergenciaAuxID);
                dxe.EmergenciaAux = e; ;
            }

            foreach (var dxe in dxeServicio)
            {
                Dano d = db.Danos.Find(dxe.DanoEmergenciaID);
                dxe.DanoEmergencia = d;

                Emergencia e = db.Emergencias.Find(dxe.EmergenciaAuxID);
                dxe.EmergenciaAux = e; ;
            }

            ViewBag.dxeSalud = dxeSalud;
            ViewBag.dxeMateriales = dxeMateriales;
            ViewBag.dxeCom = dxeCom;
            ViewBag.dxeServicio = dxeServicio;



            ViewBag.Salud = salud;
            ViewBag.Materiales = materiales;
            ViewBag.Publica = publica;

            ViewBag.SaludDatos = gdatos1;
            ViewBag.MaterialesDatos = gdatos2;
            ViewBag.PublicaDatos = gdatos3;

            return View(gg);
        }

        public ActionResult Config()
        {
            ViewBag.Estado = (from item in db.Parametros
                              where item.CodigoUnico.Equals("ESTADOEMERGENCIA")
                              select item).ToList();
            ViewBag.Tipo = (from item in db.TipoEmergencias
                              select item).Include(a => a.EscalaEmergencia).ToList();
            return View();
        }

        public JsonResult GetDataSalud()
        {
            // Dano Salud
            Parametro danoSalud = new Parametro();
            danoSalud = db.Parametros.Where(d => d.Nombre.Equals("SALUD")).ToList().FirstOrDefault();

            List<Dano> danosSalud = new List<Dano>();
            danosSalud = db.Danos.Where(d => d.UnidadDanoID.Equals(danoSalud.ParametroID)).ToList();

            List<DanoXEmergencia> dxeSalud = new List<DanoXEmergencia>();

            foreach (Dano dano in danosSalud)
            {
                dxeSalud.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));

            }

            foreach (var dxe in dxeSalud)
            {
                Dano d = db.Danos.Find(dxe.DanoEmergenciaID);
                dxe.DanoEmergencia = d;

                Emergencia e = db.Emergencias.Find(dxe.EmergenciaAuxID);
                dxe.EmergenciaAux = e; ;
            }

            List<object> lista = new List<object>();

            foreach (var p in dxeSalud)
            {

                lista.Add(new { Name = p.DanoEmergencia.Nombre, Value = p.Cantidad});

            }

            return Json(lista);
        }

        public JsonResult GetDataMateriales()
        {
            // Dano Materiales
            Parametro danoMateriales = new Parametro();
            danoMateriales = db.Parametros.Where(d => d.Nombre.Equals("MATERIAL")).ToList().FirstOrDefault();

            List<Dano> danosMateriales = new List<Dano>();
            danosMateriales = db.Danos.Where(d => d.UnidadDanoID.Equals(danoMateriales.ParametroID)).ToList();

            List<DanoXEmergencia> dxeMateriales = new List<DanoXEmergencia>();

            foreach (Dano dano in danosMateriales)
            {
                dxeMateriales.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));

            }

            foreach (var dxe in dxeMateriales)
            {
                Dano d = db.Danos.Find(dxe.DanoEmergenciaID);
                dxe.DanoEmergencia = d;

                Emergencia e = db.Emergencias.Find(dxe.EmergenciaAuxID);
                dxe.EmergenciaAux = e; ;
            }

            List<object> lista = new List<object>();

            foreach (var p in dxeMateriales)
            {

                lista.Add(new { Name = p.DanoEmergencia.Nombre, Value = p.Cantidad });

            }

            return Json(lista);
        }

        public JsonResult GetDataCom()
        {
            // Dano Comunicacion Publica
            Parametro danoCom = new Parametro();
            danoCom = db.Parametros.Where(d => d.Nombre.Equals("COMUNICACION")).ToList().FirstOrDefault();

            List<Dano> danosCom = new List<Dano>();
            danosCom = db.Danos.Where(d => d.UnidadDanoID.Equals(danoCom.ParametroID)).ToList();

            List<DanoXEmergencia> dxeCom = new List<DanoXEmergencia>();

            foreach (Dano dano in danosCom)
            {
                dxeCom.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));
            }

            foreach (var dxe in dxeCom)
            {
                Dano d = db.Danos.Find(dxe.DanoEmergenciaID);
                dxe.DanoEmergencia = d;

                Emergencia e = db.Emergencias.Find(dxe.EmergenciaAuxID);
                dxe.EmergenciaAux = e; ;
            }

            List<object> lista = new List<object>();

            foreach (var p in dxeCom)
            {

                lista.Add(new { Name = p.DanoEmergencia.Nombre, Value = p.Cantidad });

            }

            return Json(lista);
        }

        public JsonResult GetDataServicio()
        {
            // Dano Servicios Basicos
            Parametro danoServicio = new Parametro();
            danoServicio = db.Parametros.Where(d => d.Nombre.Equals("SERVICIOS")).ToList().FirstOrDefault();

            List<Dano> danosServicio = new List<Dano>();
            danosServicio = db.Danos.Where(d => d.UnidadDanoID.Equals(danoServicio.ParametroID)).ToList();

            List<DanoXEmergencia> dxeServicio = new List<DanoXEmergencia>();

            foreach (Dano dano in danosServicio)
            {
                dxeServicio.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));
            }

            foreach (var dxe in dxeServicio)
            {
                Dano d = db.Danos.Find(dxe.DanoEmergenciaID);
                dxe.DanoEmergencia = d;

                Emergencia e = db.Emergencias.Find(dxe.EmergenciaAuxID);
                dxe.EmergenciaAux = e; ;
            }

            List<object> lista = new List<object>();

            foreach (var p in dxeServicio)
            {

                lista.Add(new { Name = p.DanoEmergencia.Nombre, Value = p.Cantidad });

            }

            return Json(lista);
        }

        public JsonResult GetDataDano()
        {
            // Dano Salud
            Parametro danoSalud = new Parametro();
            danoSalud = db.Parametros.Where(d => d.Nombre.Equals("SALUD")).ToList().FirstOrDefault();

            List<Dano> danosSalud = new List<Dano>();
            danosSalud = db.Danos.Where(d => d.UnidadDanoID.Equals(danoSalud.ParametroID)).ToList();

            List<DanoXEmergencia> dxeSalud = new List<DanoXEmergencia>();

            foreach (Dano dano in danosSalud)
            {
                dxeSalud.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));

            }

            // Dano Materiales
            Parametro danoMateriales = new Parametro();
            danoMateriales = db.Parametros.Where(d => d.Nombre.Equals("MATERIAL")).ToList().FirstOrDefault();

            List<Dano> danosMateriales = new List<Dano>();
            danosMateriales = db.Danos.Where(d => d.UnidadDanoID.Equals(danoMateriales.ParametroID)).ToList();

            List<DanoXEmergencia> dxeMateriales = new List<DanoXEmergencia>();

            foreach (Dano dano in danosMateriales)
            {
                dxeMateriales.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));

            }

            // Dano Comunicacion Publica
            Parametro danoCom = new Parametro();
            danoCom = db.Parametros.Where(d => d.Nombre.Equals("COMUNICACION")).ToList().FirstOrDefault();

            List<Dano> danosCom = new List<Dano>();
            danosCom = db.Danos.Where(d => d.UnidadDanoID.Equals(danoCom.ParametroID)).ToList();

            List<DanoXEmergencia> dxeCom = new List<DanoXEmergencia>();

            foreach (Dano dano in danosCom)
            {
                dxeCom.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));
            }

            // Dano Servicios Basicos
            Parametro danoServicio = new Parametro();
            danoServicio = db.Parametros.Where(d => d.Nombre.Equals("SERVICIOS")).ToList().FirstOrDefault();

            List<Dano> danosServicio = new List<Dano>();
            danosServicio = db.Danos.Where(d => d.UnidadDanoID.Equals(danoServicio.ParametroID)).ToList();

            List<DanoXEmergencia> dxeServicio = new List<DanoXEmergencia>();

            foreach (Dano dano in danosServicio)
            {
                dxeServicio.AddRange(db.DanoXEmergencias.Where(dxe => dxe.DanoEmergenciaID.Equals(dano.DanoID)));
            }

            List<object> lista = new List<object>();
            int cantidadSalud = 0;
            int cantidadMateriales = 0;
            int cantidadCom = 0;
            int cantidadServicio = 0;


            foreach (var p in dxeSalud)
            {

                cantidadSalud += p.Cantidad;

            }

            foreach (var p in dxeMateriales)
            {

                cantidadMateriales += p.Cantidad;

            }

            foreach (var p in dxeCom)
            {

                cantidadCom += p.Cantidad;

            }

            foreach (var p in dxeServicio)
            {

                cantidadServicio += p.Cantidad;

            }

            lista.Add(new { Name = "Daños a la Salud", Value = cantidadSalud });
            lista.Add(new { Name = "Daños Materiales", Value = cantidadMateriales });
            lista.Add(new { Name = "Daños a los Sistemas de Comunicación Pública", Value = cantidadCom });
            lista.Add(new { Name = "Daños a los Servicios Básicos", Value = cantidadServicio });

            return Json(lista);
        }
    }
}